# gl105_rule.py

import sys
from pathlib import Path

# 获取 template 目录的绝对路径（根据实际结构调整）
current_file = Path(__file__)
template_dir = current_file.parent.parent  # 上两级目录


sys.path.append(str(template_dir))

# 现在可以正常导入
from utils import date_handler
from base_rule import BaseRule
from DataProcessor import DataProcessor
import random
import pandas as pd



class GL105_Rule(BaseRule):
    def __init__(self, project_info):
        # ✅ 使用 lambda 封装 project_info
        super().__init__("GL105", project_info)

        print("🚀 正在生成 GL105 模板数据...")
        self.project_info = project_info.get("project_info")
        print(self.project_info)


        self.add_field("工程地点及桩号", lambda _: self.project_info.get("工程地点及桩号", default="待补充"))
        self.add_field("具体部位", lambda _: self.project_info.get("具体部位", default="待补充"))
        self.add_field("检查内容（或主要工序）", lambda _: self.project_info.get("检查内容（或主要工序）", default="待补充"))

        # 获取施工日期并转为字符串格式
        施工日期_str = self.project_info.get("施工日期", "2024年05月31日")

        self.add_field("开工日期",
                    lambda _: date_handler(施工日期_str),
                    data_type="date",
                    format="%Y年%m月%d日")

        self.add_field("申请日期",
                    lambda _: date_handler(施工日期_str, -1),
                    data_type="date",
                    format="%Y年%m月%d日")

        self.add_field("检验人员递交日期时间",
                    lambda _: date_handler(施工日期_str, -1),
                    data_type="date",
                    format="%Y年%m月%d日")

        self.add_field("现场监理员收件日期时间",
                    lambda _: date_handler(施工日期_str, -1),
                    data_type="date",
                    format="%Y年%m月%d日")

        self.add_field("签字时间(最后部位浇筑时间)",
                    lambda _: date_handler(施工日期_str, 30),
                    data_type="date",
                    format="%Y年%m月%d日")
    def process(self,**kwargs):
        """
        封装处理逻辑，直接返回结果
        :param data_file_path: 数据文件路径（Excel/CSV）
        :return: 处理后的 DataFrame
        """
        data_file_path=current_file.parent / '模板数据.xlsx'
        df = pd.read_excel(data_file_path)
        rules = self.get_rules()

        processor = DataProcessor(base_data=df, project_info=self.project_info, rules=rules)
        results = processor.process_dataframe(df)

        return results

if __name__ == "__main__":
    PROJECT_BASE_INFO ={
    '施工单位':'浙江交工宏途交通建设有限公司',
    '监理单位':'浙江浙中建设工程管理有限公司',
    '单位工程':'路基工程',
    '分部工程':'涵洞、通道',
    '分项工程':'主体结构',
    '施工日期':'2024/05/31',
    '施工部位':'K59+639圆管涵',
    '设计坐标(X,Y)':(3243273.926,509154.842),
    '长':44.5,#圆管涵长度
    '宽':4,#圆管涵宽度
    '基础宽度':2759,
    '基础厚度':300,
    '基础顶高程':66035,
    '设计高程':66,#基础高程
    '断面尺寸长度':1250,
    '断面尺寸宽度':275.9,
    '断面尺寸高(厚)度':30,
    '基础混凝土强度（砂浆）等级':'C25',
    '基础设计混凝土（砂浆）用量':'15',
    '基础实际混凝土（砂浆）用量':'16',
    '护壁混凝土强度（砂浆）等级':'C25',
    '护壁设计混凝土（砂浆）用量':'15',
    '护壁实际混凝土（砂浆）用量':'16',
} 

    rule = GL105_Rule(PROJECT_BASE_INFO)
    results = rule.process()
    print(results)
    